package com.xx.questionnaire.isms.DorEModule.arithmetic;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.log4j.Logger;

import com.xx.questionnaire.isms.DorEModule.EncryptionI;


/**
 * 消息摘要算法<br>
 * @author Administrator<br>
 * @特点
 * 分组长度：512byte<br>
 * 摘要长度：128byte<br>
 * for 次数：64<br>
 * 报文最大长度：无限 
 * 
 * 
 *
 */
public final class MD5 implements EncryptionI{
	static Logger log = Logger.getLogger(MD5.class);
	
	/**
	 * 对明文进行信息摘加密运行<br>
	 * @param str 明文
	 * @return 密文
	 */
	 private static String Md5Encode32(String str){
		 if(str.equals("")){
			 return null;
		 }
		 MessageDigest md = null;
		  
		 byte[] by;
		 try {
			md = MessageDigest.getInstance("MD5");
			byte[] byteArray = str.getBytes("UTF-8");
			md.update(byteArray);
			by = md.digest();
			log.info("摘要长度："+by);

			StringBuffer buffer = new StringBuffer();
			for(int i=0;i<by.length;i++){
				 
				int val = (int)by[i] & 0xff;
				 
				
				if(val < 16){
					buffer.append("0");
				}
				buffer.append(Integer.toHexString(val));
			}
			log.info("密文长度："+buffer.toString().length());
			return buffer.toString();
			
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		 return null;
		 
	 }
	 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String a ="amigoxiexiexingxing";
		String key2 = MD5.Md5Encode32(a);
		System.out.println(key2);

	}

	public String Encryption(String str) {
		if(str.equals("")||str==null){
			return null;
		}
		return Md5Encode32(str);
	}

	 

}
